/*******************************************************************************
*
 * Copyright (C) 2021-2024 Advanced Micro Devices, Inc. All rights reserved.
 *
*******************************************************************************/

#include <MyPorting.h>
#include <MiscMemDefines.h>
#include <APCB.h>
#include "ApcbCustomizedDefinitions.h"
#include "ApcbCustomizedBoardDefinitions.h"
#include <ApcbDefaults.h>

//
// RDIMM BUSCFG DDR5
//
APCB_TYPE_DATA_START_SIGNATURE();
APCB_V3_TYPE_HEADER       ApcbTypeHeader = {
  APCB_GROUP_MEMORY,                          // GroupId
  APCB_MEM_TYPE_PS_RDIMM_DDR5_BUSCFG,         // TypeId
  sizeof(ApcbTypeHeader),                     // SizeOfType, will be fixed up by tool
  0,                                          // InstanceId
  {
    APCB_TYPE_ATTR_CONTEXT_TYPE_STRUCT,
    APCB_TYPE_ATTR_CONTEXT_FORMAT_NATIVE_RAW,
    0,
    APCB_PRIORITY_TYPE_MASK_DEFAULT,          // Priority mask
    0,
    0,
    BLDCFG_APCB_DATA_BOARD_MASK               // Board specific APCB instance mask
  }
};  // SizeOfType will be fixed up by tool

PSCFG_BUS_ENTRY_S PlatformCfgBus[] = {
  {
    .Header = {
      .Length       = sizeof(PSCFG_DDR5_BUS_ENTRY_HEADER_S),
      .MemClk       = DDR4000_FREQUENCY,
      .DimmPerCh    = 2,
      .Dimm0        = DIMM_SR,
      .Dimm1        = DIMM_DR,
      .DevWidth     = DEVWIDTH_4,
    },
    .Payload = {
      .Length           = sizeof(PSCFG_DDR5_BUS_ENTRY_PAYLOAD_S),
      .CaTimingMode     = TMG_1N,
      .Dimm0_RttNomWr   = D5_IMP_OFF,
      .Dimm0_RttNomRd   = D5_IMP_OFF,
      .Dimm0_RttWr      = D5_IMP_48,
      .Dimm0_RttPark    = D5_IMP_34,
      .Dimm0_DqsRttPark = D5_IMP_60,
      .Dimm1_RttNomWr   = D5_IMP_80,
      .Dimm1_RttNomRd   = D5_IMP_120,
      .Dimm1_RttWr      = D5_IMP_120,
      .Dimm1_RttPark    = D5_IMP_60,
      .Dimm1_DqsRttPark = D5_IMP_34,
      .DramDrv          = D5_IMP_34,
      .CkOdtA           = D5_IMP_OFF,
      .CsOdtA           = D5_IMP_OFF,
      .CaOdtA           = D5_IMP_OFF,
      .CkOdtB           = D5_IMP_OFF,
      .CsOdtB           = D5_IMP_OFF,
      .CaOdtB           = D5_IMP_OFF,
      .POdt             = D5_IMP_60,
      .DqDrv            = D5_IMP_34,
      .AlertPu          = D5_IMP_80,
      .CaDrv            = D5_IMP_40,
      .PhyVref          = 0x2D,
      .DqVref           = 0x2D,
      .CaVref           = 0x3F,
      .CsVref           = 0x38,
      .DCaVref          = 0x20,
      .DCsVref          = 0x28,
      .RxDfe            = DFE_EN,
      .TxDfe            = DFE_EN,
    },
  },
  {
    .Header = {
      .Length       = sizeof(PSCFG_DDR5_BUS_ENTRY_HEADER_S),
      .MemClk       = DDR4000_FREQUENCY,
      .DimmPerCh    = 2,
      .Dimm0        = DIMM_SR,
      .Dimm1        = DIMM_DR,
      .DevWidth     = DEVWIDTH_8,
    },
    .Payload = {
      .Length           = sizeof(PSCFG_DDR5_BUS_ENTRY_PAYLOAD_S),
      .CaTimingMode     = TMG_1N,
      .Dimm0_RttNomWr   = D5_IMP_OFF,
      .Dimm0_RttNomRd   = D5_IMP_OFF,
      .Dimm0_RttWr      = D5_IMP_48,
      .Dimm0_RttPark    = D5_IMP_34,
      .Dimm0_DqsRttPark = D5_IMP_60,
      .Dimm1_RttNomWr   = D5_IMP_80,
      .Dimm1_RttNomRd   = D5_IMP_120,
      .Dimm1_RttWr      = D5_IMP_120,
      .Dimm1_RttPark    = D5_IMP_60,
      .Dimm1_DqsRttPark = D5_IMP_34,
      .DramDrv          = D5_IMP_34,
      .CkOdtA           = D5_IMP_OFF,
      .CsOdtA           = D5_IMP_OFF,
      .CaOdtA           = D5_IMP_240,
      .CkOdtB           = D5_IMP_OFF,
      .CsOdtB           = D5_IMP_OFF,
      .CaOdtB           = D5_IMP_OFF,
      .POdt             = D5_IMP_60,
      .DqDrv            = D5_IMP_34,
      .AlertPu          = D5_IMP_80,
      .CaDrv            = D5_IMP_40,
      .PhyVref          = 0x2D,
      .DqVref           = 0x2D,
      .CaVref           = 0x3F,
      .CsVref           = 0x38,
      .DCaVref          = 0x20,
      .DCsVref          = 0x28,
      .RxDfe            = DFE_EN,
      .TxDfe            = DFE_EN,
    },
  },
  {
    .Header = {
      .Length       = sizeof(PSCFG_DDR5_BUS_ENTRY_HEADER_S),
      .MemClk       = DDR4000_FREQUENCY,
      .DimmPerCh    = 2,
      .Dimm0        = DIMM_DR,
      .Dimm1        = DIMM_SR,
      .DevWidth     = DEVWIDTH_4,
    },
    .Payload = {
      .Length           = sizeof(PSCFG_DDR5_BUS_ENTRY_PAYLOAD_S),
      .CaTimingMode     = TMG_1N,
      .Dimm0_RttNomWr   = D5_IMP_80,
      .Dimm0_RttNomRd   = D5_IMP_120,
      .Dimm0_RttWr      = D5_IMP_120,
      .Dimm0_RttPark    = D5_IMP_34,
      .Dimm0_DqsRttPark = D5_IMP_34,
      .Dimm1_RttNomWr   = D5_IMP_80,
      .Dimm1_RttNomRd   = D5_IMP_80,
      .Dimm1_RttWr      = D5_IMP_120,
      .Dimm1_RttPark    = D5_IMP_60,
      .Dimm1_DqsRttPark = D5_IMP_34,
      .DramDrv          = D5_IMP_34,
      .CkOdtA           = D5_IMP_OFF,
      .CsOdtA           = D5_IMP_OFF,
      .CaOdtA           = D5_IMP_OFF,
      .CkOdtB           = D5_IMP_OFF,
      .CsOdtB           = D5_IMP_OFF,
      .CaOdtB           = D5_IMP_OFF,
      .POdt             = D5_IMP_60,
      .DqDrv            = D5_IMP_34,
      .AlertPu          = D5_IMP_80,
      .CaDrv            = D5_IMP_40,
      .PhyVref          = 0x2D,
      .DqVref           = 0x2D,
      .CaVref           = 0x3F,
      .CsVref           = 0x38,
      .DCaVref          = 0x20,
      .DCsVref          = 0x28,
      .RxDfe            = DFE_EN,
      .TxDfe            = DFE_EN,
    },
  },
  {
    .Header = {
      .Length       = sizeof(PSCFG_DDR5_BUS_ENTRY_HEADER_S),
      .MemClk       = DDR4000_FREQUENCY,
      .DimmPerCh    = 2,
      .Dimm0        = DIMM_DR,
      .Dimm1        = DIMM_SR,
      .DevWidth     = DEVWIDTH_8,
    },
    .Payload = {
      .Length           = sizeof(PSCFG_DDR5_BUS_ENTRY_PAYLOAD_S),
      .CaTimingMode     = TMG_1N,
      .Dimm0_RttNomWr   = D5_IMP_80,
      .Dimm0_RttNomRd   = D5_IMP_120,
      .Dimm0_RttWr      = D5_IMP_120,
      .Dimm0_RttPark    = D5_IMP_34,
      .Dimm0_DqsRttPark = D5_IMP_34,
      .Dimm1_RttNomWr   = D5_IMP_80,
      .Dimm1_RttNomRd   = D5_IMP_80,
      .Dimm1_RttWr      = D5_IMP_120,
      .Dimm1_RttPark    = D5_IMP_60,
      .Dimm1_DqsRttPark = D5_IMP_34,
      .DramDrv          = D5_IMP_34,
      .CkOdtA           = D5_IMP_OFF,
      .CsOdtA           = D5_IMP_OFF,
      .CaOdtA           = D5_IMP_240,
      .CkOdtB           = D5_IMP_OFF,
      .CsOdtB           = D5_IMP_OFF,
      .CaOdtB           = D5_IMP_OFF,
      .POdt             = D5_IMP_60,
      .DqDrv            = D5_IMP_34,
      .AlertPu          = D5_IMP_80,
      .CaDrv            = D5_IMP_40,
      .PhyVref          = 0x2D,
      .DqVref           = 0x2D,
      .CaVref           = 0x3F,
      .CsVref           = 0x38,
      .DCaVref          = 0x20,
      .DCsVref          = 0x28,
      .RxDfe            = DFE_EN,
      .TxDfe            = DFE_EN,
    },
  },
  {
    .Header = {
      .Length       = sizeof(PSCFG_DDR5_BUS_ENTRY_HEADER_S),
      .MemClk       = DDR4000_FREQUENCY,
      .DimmPerCh    = 2,
      .Dimm0        = DIMM_DR,
      .Dimm1        = DIMM_DR,
      .DevWidth     = DEVWIDTH_4,
    },
    .Payload = {
      .Length           = sizeof(PSCFG_DDR5_BUS_ENTRY_PAYLOAD_S),
      .CaTimingMode     = TMG_1N,
      .Dimm0_RttNomWr   = D5_IMP_80,
      .Dimm0_RttNomRd   = D5_IMP_120,
      .Dimm0_RttWr      = D5_IMP_120,
      .Dimm0_RttPark    = D5_IMP_60,
      .Dimm0_DqsRttPark = D5_IMP_80,
      .Dimm1_RttNomWr   = D5_IMP_80,
      .Dimm1_RttNomRd   = D5_IMP_120,
      .Dimm1_RttWr      = D5_IMP_120,
      .Dimm1_RttPark    = D5_IMP_60,
      .Dimm1_DqsRttPark = D5_IMP_80,
      .DramDrv          = D5_IMP_34,
      .CkOdtA           = D5_IMP_OFF,
      .CsOdtA           = D5_IMP_OFF,
      .CaOdtA           = D5_IMP_OFF,
      .CkOdtB           = D5_IMP_40,
      .CsOdtB           = D5_IMP_40,
      .CaOdtB           = D5_IMP_60,
      .POdt             = D5_IMP_60,
      .DqDrv            = D5_IMP_34,
      .AlertPu          = D5_IMP_80,
      .CaDrv            = D5_IMP_40,
      .PhyVref          = 0x2D,
      .DqVref           = 0x2D,
      .CaVref           = 0x3F,
      .CsVref           = 0x38,
      .DCaVref          = 0x20,
      .DCsVref          = 0x28,
      .RxDfe            = DFE_EN,
      .TxDfe            = DFE_EN,
    },
  },
  {
    .Header = {
      .Length       = sizeof(PSCFG_DDR5_BUS_ENTRY_HEADER_S),
      .MemClk       = DDR4000_FREQUENCY,
      .DimmPerCh    = 2,
      .Dimm0        = DIMM_DR,
      .Dimm1        = DIMM_DR,
      .DevWidth     = DEVWIDTH_8,
    },
    .Payload = {
      .Length           = sizeof(PSCFG_DDR5_BUS_ENTRY_PAYLOAD_S),
      .CaTimingMode     = TMG_1N,
      .Dimm0_RttNomWr   = D5_IMP_80,
      .Dimm0_RttNomRd   = D5_IMP_120,
      .Dimm0_RttWr      = D5_IMP_120,
      .Dimm0_RttPark    = D5_IMP_60,
      .Dimm0_DqsRttPark = D5_IMP_80,
      .Dimm1_RttNomWr   = D5_IMP_80,
      .Dimm1_RttNomRd   = D5_IMP_120,
      .Dimm1_RttWr      = D5_IMP_120,
      .Dimm1_RttPark    = D5_IMP_60,
      .Dimm1_DqsRttPark = D5_IMP_80,
      .DramDrv          = D5_IMP_34,
      .CkOdtA           = D5_IMP_OFF,
      .CsOdtA           = D5_IMP_OFF,
      .CaOdtA           = D5_IMP_OFF,
      .CkOdtB           = D5_IMP_40,
      .CsOdtB           = D5_IMP_40,
      .CaOdtB           = D5_IMP_60,
      .POdt             = D5_IMP_60,
      .DqDrv            = D5_IMP_34,
      .AlertPu          = D5_IMP_80,
      .CaDrv            = D5_IMP_40,
      .PhyVref          = 0x2D,
      .DqVref           = 0x2D,
      .CaVref           = 0x3F,
      .CsVref           = 0x38,
      .DCaVref          = 0x20,
      .DCsVref          = 0x28,
      .RxDfe            = DFE_EN,
      .TxDfe            = DFE_EN,
    },
  },
  {
    .Header = {
      .Length       = sizeof(PSCFG_DDR5_BUS_ENTRY_HEADER_S),
      .MemClk       = DDR4400_FREQUENCY,
      .DimmPerCh    = 2,
      .Dimm0        = DIMM_SR,
      .Dimm1        = DIMM_SR,
      .DevWidth     = DEVWIDTH_4,
    },
    .Payload = {
      .Length           = sizeof(PSCFG_DDR5_BUS_ENTRY_PAYLOAD_S),
      .CaTimingMode     = TMG_1N,
      .Dimm0_RttNomWr   = D5_IMP_80,
      .Dimm0_RttNomRd   = D5_IMP_120,
      .Dimm0_RttWr      = D5_IMP_48,
      .Dimm0_RttPark    = D5_IMP_34,
      .Dimm0_DqsRttPark = D5_IMP_60,
      .Dimm1_RttNomWr   = D5_IMP_80,
      .Dimm1_RttNomRd   = D5_IMP_120,
      .Dimm1_RttWr      = D5_IMP_48,
      .Dimm1_RttPark    = D5_IMP_34,
      .Dimm1_DqsRttPark = D5_IMP_60,
      .DramDrv          = D5_IMP_34,
      .CkOdtA           = D5_IMP_OFF,
      .CsOdtA           = D5_IMP_OFF,
      .CaOdtA           = D5_IMP_OFF,
      .CkOdtB           = D5_IMP_40,
      .CsOdtB           = D5_IMP_40,
      .CaOdtB           = D5_IMP_60,
      .POdt             = D5_IMP_60,
      .DqDrv            = D5_IMP_34,
      .AlertPu          = D5_IMP_80,
      .CaDrv            = D5_IMP_40,
      .PhyVref          = 0x2D,
      .DqVref           = 0x28,
      .CaVref           = 0x3F,
      .CsVref           = 0x38,
      .DCaVref          = 0x20,
      .DCsVref          = 0x28,
      .RxDfe            = DFE_EN,
      .TxDfe            = DFE_EN,
    },
  },
  {
    .Header = {
      .Length       = sizeof(PSCFG_DDR5_BUS_ENTRY_HEADER_S),
      .MemClk       = DDR4400_FREQUENCY,
      .DimmPerCh    = 2,
      .Dimm0        = DIMM_SR,
      .Dimm1        = DIMM_SR,
      .DevWidth     = DEVWIDTH_8,
    },
    .Payload = {
      .Length           = sizeof(PSCFG_DDR5_BUS_ENTRY_PAYLOAD_S),
      .CaTimingMode     = TMG_1N,
      .Dimm0_RttNomWr   = D5_IMP_80,
      .Dimm0_RttNomRd   = D5_IMP_120,
      .Dimm0_RttWr      = D5_IMP_48,
      .Dimm0_RttPark    = D5_IMP_34,
      .Dimm0_DqsRttPark = D5_IMP_60,
      .Dimm1_RttNomWr   = D5_IMP_80,
      .Dimm1_RttNomRd   = D5_IMP_120,
      .Dimm1_RttWr      = D5_IMP_48,
      .Dimm1_RttPark    = D5_IMP_34,
      .Dimm1_DqsRttPark = D5_IMP_60,
      .DramDrv          = D5_IMP_34,
      .CkOdtA           = D5_IMP_OFF,
      .CsOdtA           = D5_IMP_OFF,
      .CaOdtA           = D5_IMP_240,
      .CkOdtB           = D5_IMP_40,
      .CsOdtB           = D5_IMP_40,
      .CaOdtB           = D5_IMP_60,
      .POdt             = D5_IMP_60,
      .DqDrv            = D5_IMP_34,
      .AlertPu          = D5_IMP_80,
      .CaDrv            = D5_IMP_40,
      .PhyVref          = 0x2D,
      .DqVref           = 0x28,
      .CaVref           = 0x3F,
      .CsVref           = 0x38,
      .DCaVref          = 0x20,
      .DCsVref          = 0x28,
      .RxDfe            = DFE_EN,
      .TxDfe            = DFE_EN,
    },
  },
  {
    .Header = {
      .Length       = sizeof(PSCFG_DDR5_BUS_ENTRY_HEADER_S),
      .MemClk       = DDR4800_FREQUENCY,
      .DimmPerCh    = 2,
      .Dimm0        = DIMM_NP,
      .Dimm1        = DIMM_DR,
      .DevWidth     = DEVWIDTH_4,
    },
    .Payload = {
      .Length           = sizeof(PSCFG_DDR5_BUS_ENTRY_PAYLOAD_S),
      .CaTimingMode     = TMG_1N,
      .Dimm0_RttNomWr   = D5_IMP_OFF,
      .Dimm0_RttNomRd   = D5_IMP_OFF,
      .Dimm0_RttWr      = D5_IMP_OFF,
      .Dimm0_RttPark    = D5_IMP_OFF,
      .Dimm0_DqsRttPark = D5_IMP_OFF,
      .Dimm1_RttNomWr   = D5_IMP_OFF,
      .Dimm1_RttNomRd   = D5_IMP_OFF,
      .Dimm1_RttWr      = D5_IMP_120,
      .Dimm1_RttPark    = D5_IMP_60,
      .Dimm1_DqsRttPark = D5_IMP_60,
      .DramDrv          = D5_IMP_34,
      .CkOdtA           = D5_IMP_OFF,
      .CsOdtA           = D5_IMP_OFF,
      .CaOdtA           = D5_IMP_OFF,
      .CkOdtB           = D5_IMP_40,
      .CsOdtB           = D5_IMP_40,
      .CaOdtB           = D5_IMP_60,
      .POdt             = D5_IMP_60,
      .DqDrv            = D5_IMP_34,
      .AlertPu          = D5_IMP_80,
      .CaDrv            = D5_IMP_40,
      .PhyVref          = 0x2D,
      .DqVref           = 0x2D,
      .CaVref           = 0x3F,
      .CsVref           = 0x38,
      .DCaVref          = 0x30,
      .DCsVref          = 0x3A,
      .RxDfe            = DFE_EN,
      .TxDfe            = DFE_EN,
    },
  },
  {
    .Header = {
      .Length       = sizeof(PSCFG_DDR5_BUS_ENTRY_HEADER_S),
      .MemClk       = DDR4800_FREQUENCY,
      .DimmPerCh    = 2,
      .Dimm0        = DIMM_NP,
      .Dimm1        = DIMM_DR,
      .DevWidth     = DEVWIDTH_8,
    },
    .Payload = {
      .Length           = sizeof(PSCFG_DDR5_BUS_ENTRY_PAYLOAD_S),
      .CaTimingMode     = TMG_1N,
      .Dimm0_RttNomWr   = D5_IMP_OFF,
      .Dimm0_RttNomRd   = D5_IMP_OFF,
      .Dimm0_RttWr      = D5_IMP_OFF,
      .Dimm0_RttPark    = D5_IMP_OFF,
      .Dimm0_DqsRttPark = D5_IMP_OFF,
      .Dimm1_RttNomWr   = D5_IMP_OFF,
      .Dimm1_RttNomRd   = D5_IMP_OFF,
      .Dimm1_RttWr      = D5_IMP_120,
      .Dimm1_RttPark    = D5_IMP_60,
      .Dimm1_DqsRttPark = D5_IMP_60,
      .DramDrv          = D5_IMP_34,
      .CkOdtA           = D5_IMP_OFF,
      .CsOdtA           = D5_IMP_OFF,
      .CaOdtA           = D5_IMP_OFF,
      .CkOdtB           = D5_IMP_40,
      .CsOdtB           = D5_IMP_40,
      .CaOdtB           = D5_IMP_60,
      .POdt             = D5_IMP_60,
      .DqDrv            = D5_IMP_34,
      .AlertPu          = D5_IMP_80,
      .CaDrv            = D5_IMP_40,
      .PhyVref          = 0x2D,
      .DqVref           = 0x2D,
      .CaVref           = 0x3F,
      .CsVref           = 0x38,
      .DCaVref          = 0x30,
      .DCsVref          = 0x3A,
      .RxDfe            = DFE_EN,
      .TxDfe            = DFE_EN,
    },
  },
  {
    .Header = {
      .Length       = sizeof(PSCFG_DDR5_BUS_ENTRY_HEADER_S),
      .MemClk       = DDR5200_FREQUENCY,
      .DimmPerCh    = 1,
      .Dimm0        = DIMM_SR,
      .Dimm1        = DIMM_NP,
      .DevWidth     = DEVWIDTH_4,
    },
    .Payload = {
      .Length           = sizeof(PSCFG_DDR5_BUS_ENTRY_PAYLOAD_S),
      .CaTimingMode     = TMG_1N,
      .Dimm0_RttNomWr   = D5_IMP_OFF,
      .Dimm0_RttNomRd   = D5_IMP_OFF,
      .Dimm0_RttWr      = D5_IMP_48,
      .Dimm0_RttPark    = D5_IMP_60,
      .Dimm0_DqsRttPark = D5_IMP_60,
      .Dimm1_RttNomWr   = D5_IMP_OFF,
      .Dimm1_RttNomRd   = D5_IMP_OFF,
      .Dimm1_RttWr      = D5_IMP_OFF,
      .Dimm1_RttPark    = D5_IMP_OFF,
      .Dimm1_DqsRttPark = D5_IMP_OFF,
      .DramDrv          = D5_IMP_34,
      .CkOdtA           = D5_IMP_OFF,
      .CsOdtA           = D5_IMP_OFF,
      .CaOdtA           = D5_IMP_OFF,
      .CkOdtB           = D5_IMP_40,
      .CsOdtB           = D5_IMP_40,
      .CaOdtB           = D5_IMP_60,
      .POdt             = D5_IMP_60,
      .DqDrv            = D5_IMP_40,
      .AlertPu          = D5_IMP_80,
      .CaDrv            = D5_IMP_40,
      .PhyVref          = 0x5D,
      .DqVref           = 0x28,
      .CaVref           = 0x3F,
      .CsVref           = 0x38,
      .DCaVref          = 0x30,
      .DCsVref          = 0x3A,
      .RxDfe            = DFE_EN,
      .TxDfe            = DFE_EN,
    },
  },
  {
    .Header = {
      .Length       = sizeof(PSCFG_DDR5_BUS_ENTRY_HEADER_S),
      .MemClk       = DDR5200_FREQUENCY,
      .DimmPerCh    = 1,
      .Dimm0        = DIMM_SR,
      .Dimm1        = DIMM_NP,
      .DevWidth     = DEVWIDTH_8,
    },
    .Payload = {
      .Length           = sizeof(PSCFG_DDR5_BUS_ENTRY_PAYLOAD_S),
      .CaTimingMode     = TMG_1N,
      .Dimm0_RttNomWr   = D5_IMP_OFF,
      .Dimm0_RttNomRd   = D5_IMP_OFF,
      .Dimm0_RttWr      = D5_IMP_48,
      .Dimm0_RttPark    = D5_IMP_60,
      .Dimm0_DqsRttPark = D5_IMP_60,
      .Dimm1_RttNomWr   = D5_IMP_OFF,
      .Dimm1_RttNomRd   = D5_IMP_OFF,
      .Dimm1_RttWr      = D5_IMP_OFF,
      .Dimm1_RttPark    = D5_IMP_OFF,
      .Dimm1_DqsRttPark = D5_IMP_OFF,
      .DramDrv          = D5_IMP_34,
      .CkOdtA           = D5_IMP_OFF,
      .CsOdtA           = D5_IMP_OFF,
      .CaOdtA           = D5_IMP_240,
      .CkOdtB           = D5_IMP_40,
      .CsOdtB           = D5_IMP_40,
      .CaOdtB           = D5_IMP_60,
      .POdt             = D5_IMP_60,
      .DqDrv            = D5_IMP_40,
      .AlertPu          = D5_IMP_80,
      .CaDrv            = D5_IMP_40,
      .PhyVref          = 0x5D,
      .DqVref           = 0x28,
      .CaVref           = 0x3F,
      .CsVref           = 0x38,
      .DCaVref          = 0x30,
      .DCsVref          = 0x3A,
      .RxDfe            = DFE_EN,
      .TxDfe            = DFE_EN,
    },
  },
  {
    .Header = {
      .Length       = sizeof(PSCFG_DDR5_BUS_ENTRY_HEADER_S),
      .MemClk       = DDR5200_FREQUENCY,
      .DimmPerCh    = 1,
      .Dimm0        = DIMM_DR,
      .Dimm1        = DIMM_NP,
      .DevWidth     = DEVWIDTH_4,
    },
    .Payload = {
      .Length           = sizeof(PSCFG_DDR5_BUS_ENTRY_PAYLOAD_S),
      .CaTimingMode     = TMG_1N,
      .Dimm0_RttNomWr   = D5_IMP_OFF,
      .Dimm0_RttNomRd   = D5_IMP_OFF,
      .Dimm0_RttWr      = D5_IMP_120,
      .Dimm0_RttPark    = D5_IMP_60,
      .Dimm0_DqsRttPark = D5_IMP_60,
      .Dimm1_RttNomWr   = D5_IMP_OFF,
      .Dimm1_RttNomRd   = D5_IMP_OFF,
      .Dimm1_RttWr      = D5_IMP_OFF,
      .Dimm1_RttPark    = D5_IMP_OFF,
      .Dimm1_DqsRttPark = D5_IMP_OFF,
      .DramDrv          = D5_IMP_34,
      .CkOdtA           = D5_IMP_OFF,
      .CsOdtA           = D5_IMP_OFF,
      .CaOdtA           = D5_IMP_OFF,
      .CkOdtB           = D5_IMP_40,
      .CsOdtB           = D5_IMP_40,
      .CaOdtB           = D5_IMP_60,
      .POdt             = D5_IMP_60,
      .DqDrv            = D5_IMP_40,
      .AlertPu          = D5_IMP_80,
      .CaDrv            = D5_IMP_40,
      .PhyVref          = 0x2D,
      .DqVref           = 0x2D,
      .CaVref           = 0x3F,
      .CsVref           = 0x38,
      .DCaVref          = 0x30,
      .DCsVref          = 0x3A,
      .RxDfe            = DFE_EN,
      .TxDfe            = DFE_EN,
    },
  },
  {
    .Header = {
      .Length       = sizeof(PSCFG_DDR5_BUS_ENTRY_HEADER_S),
      .MemClk       = DDR5200_FREQUENCY,
      .DimmPerCh    = 1,
      .Dimm0        = DIMM_DR,
      .Dimm1        = DIMM_NP,
      .DevWidth     = DEVWIDTH_8,
    },
    .Payload = {
      .Length           = sizeof(PSCFG_DDR5_BUS_ENTRY_PAYLOAD_S),
      .CaTimingMode     = TMG_1N,
      .Dimm0_RttNomWr   = D5_IMP_OFF,
      .Dimm0_RttNomRd   = D5_IMP_OFF,
      .Dimm0_RttWr      = D5_IMP_120,
      .Dimm0_RttPark    = D5_IMP_60,
      .Dimm0_DqsRttPark = D5_IMP_60,
      .Dimm1_RttNomWr   = D5_IMP_OFF,
      .Dimm1_RttNomRd   = D5_IMP_OFF,
      .Dimm1_RttWr      = D5_IMP_OFF,
      .Dimm1_RttPark    = D5_IMP_OFF,
      .Dimm1_DqsRttPark = D5_IMP_OFF,
      .DramDrv          = D5_IMP_34,
      .CkOdtA           = D5_IMP_OFF,
      .CsOdtA           = D5_IMP_OFF,
      .CaOdtA           = D5_IMP_OFF,
      .CkOdtB           = D5_IMP_40,
      .CsOdtB           = D5_IMP_40,
      .CaOdtB           = D5_IMP_60,
      .POdt             = D5_IMP_60,
      .DqDrv            = D5_IMP_40,
      .AlertPu          = D5_IMP_80,
      .CaDrv            = D5_IMP_40,
      .PhyVref          = 0x2D,
      .DqVref           = 0x2D,
      .CaVref           = 0x3F,
      .CsVref           = 0x38,
      .DCaVref          = 0x30,
      .DCsVref          = 0x3A,
      .RxDfe            = DFE_EN,
      .TxDfe            = DFE_EN,
    },
  },
  {
    .Header = {
      .Length       = sizeof(PSCFG_DDR5_BUS_ENTRY_HEADER_S),
      .MemClk       = DDR5200_FREQUENCY,
      .DimmPerCh    = 2,
      .Dimm0        = DIMM_NP,
      .Dimm1        = DIMM_SR,
      .DevWidth     = DEVWIDTH_4,
    },
    .Payload = {
      .Length           = sizeof(PSCFG_DDR5_BUS_ENTRY_PAYLOAD_S),
      .CaTimingMode     = TMG_1N,
      .Dimm0_RttNomWr   = D5_IMP_OFF,
      .Dimm0_RttNomRd   = D5_IMP_OFF,
      .Dimm0_RttWr      = D5_IMP_OFF,
      .Dimm0_RttPark    = D5_IMP_OFF,
      .Dimm0_DqsRttPark = D5_IMP_OFF,
      .Dimm1_RttNomWr   = D5_IMP_OFF,
      .Dimm1_RttNomRd   = D5_IMP_OFF,
      .Dimm1_RttWr      = D5_IMP_48,
      .Dimm1_RttPark    = D5_IMP_60,
      .Dimm1_DqsRttPark = D5_IMP_60,
      .DramDrv          = D5_IMP_34,
      .CkOdtA           = D5_IMP_OFF,
      .CsOdtA           = D5_IMP_OFF,
      .CaOdtA           = D5_IMP_OFF,
      .CkOdtB           = D5_IMP_40,
      .CsOdtB           = D5_IMP_40,
      .CaOdtB           = D5_IMP_60,
      .POdt             = D5_IMP_60,
      .DqDrv            = D5_IMP_34,
      .AlertPu          = D5_IMP_80,
      .CaDrv            = D5_IMP_40,
      .PhyVref          = 0x5D,
      .DqVref           = 0x28,
      .CaVref           = 0x3F,
      .CsVref           = 0x38,
      .DCaVref          = 0x30,
      .DCsVref          = 0x3A,
      .RxDfe            = DFE_EN,
      .TxDfe            = DFE_EN,
    },
  },
  {
    .Header = {
      .Length       = sizeof(PSCFG_DDR5_BUS_ENTRY_HEADER_S),
      .MemClk       = DDR5200_FREQUENCY,
      .DimmPerCh    = 2,
      .Dimm0        = DIMM_NP,
      .Dimm1        = DIMM_SR,
      .DevWidth     = DEVWIDTH_8,
    },
    .Payload = {
      .Length           = sizeof(PSCFG_DDR5_BUS_ENTRY_PAYLOAD_S),
      .CaTimingMode     = TMG_1N,
      .Dimm0_RttNomWr   = D5_IMP_OFF,
      .Dimm0_RttNomRd   = D5_IMP_OFF,
      .Dimm0_RttWr      = D5_IMP_OFF,
      .Dimm0_RttPark    = D5_IMP_OFF,
      .Dimm0_DqsRttPark = D5_IMP_OFF,
      .Dimm1_RttNomWr   = D5_IMP_OFF,
      .Dimm1_RttNomRd   = D5_IMP_OFF,
      .Dimm1_RttWr      = D5_IMP_48,
      .Dimm1_RttPark    = D5_IMP_60,
      .Dimm1_DqsRttPark = D5_IMP_60,
      .DramDrv          = D5_IMP_34,
      .CkOdtA           = D5_IMP_OFF,
      .CsOdtA           = D5_IMP_OFF,
      .CaOdtA           = D5_IMP_240,
      .CkOdtB           = D5_IMP_40,
      .CsOdtB           = D5_IMP_40,
      .CaOdtB           = D5_IMP_60,
      .POdt             = D5_IMP_60,
      .DqDrv            = D5_IMP_34,
      .AlertPu          = D5_IMP_80,
      .CaDrv            = D5_IMP_40,
      .PhyVref          = 0x5D,
      .DqVref           = 0x28,
      .CaVref           = 0x3F,
      .CsVref           = 0x38,
      .DCaVref          = 0x30,
      .DCsVref          = 0x3A,
      .RxDfe            = DFE_EN,
      .TxDfe            = DFE_EN,
    },
  },
};

APCB_TYPE_DATA_END_SIGNATURE();
APCB_DUMMY_MAIN_FUNC();

